package com.liao.ten.utils;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.text.TextUtils;
import android.util.Log;

public class LoadNetDataAsyncTask extends AsyncTask<String, Void, String> {
    private static final String TAG = "LoadNetDataAsyncTask";


    onGetNetDataListener listener;

    int id;

    Context context;

    String fileName;

    public LoadNetDataAsyncTask(Context context, onGetNetDataListener listener, int id) {
        this.listener = listener;
        this.id = id;
    }

    public LoadNetDataAsyncTask(Context context, onGetNetDataListener listener, int id, String fileName) {
        this.listener = listener;
        this.id = id;
        this.fileName = fileName;
        this.context = context;
    }

    //    2.重写三个方法
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
//       执行异步请求之前，会调用的函数，通常做初始化操作。在主线程中工作的方法
    }

    @Override
    protected String doInBackground(String... params) {
        //开启了子线程，进行耗时操作，将获取到的数据，返回给主线程
        String json = HttpUtils.getJsonByNetwork(params[0]);
        if (!TextUtils.isEmpty(json)) {
            if (id == ContentUtils.DATA_TYPE1) {
                FileUtil.saveDataToFile(context, fileName, json);
            } else {
                FileUtil.saveDataToDB(json);
            }
        }
        return json;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
//                回到了主线程，将子线程传回来的数据，进行操作，更新UI
//                判断如果子线程返回的数据，不为空，就显示在UI控件上
        if (!TextUtils.isEmpty(s)) {
//              解析数据
            listener.showDataFromNet(s, id);
        }
    }

    //定义一个接口，当获取到数据时，就调用接口当中的方法
    public interface onGetNetDataListener {
        public void showDataFromNet(String s, int id);
    }
}
